// components/like/index.js
Component({
  /**
   * 组件的属性列表
   */
  properties: {
    like: {
      type: Boolean
      // value: false,
      // observer() {}
    },
    count: {
      type: Number
    },
    readOnly: {
      type: Boolean
    }
  },

  /**
   * 组件的初始数据
   * 哪些数据需要封装在组件内部，哪些需要开放出来
   * 粒度：非常简单的功能/非常复杂的功能
   */
  data: {
    yesSrc: 'images/like.png',
    noSrc: 'images/like@dis.png'
  },

  /**
   * 组件的方法列表
   */
  methods: {
    onLike(event) {
      if (this.properties.readOnly) {
        return
      }
      //let声明的是一个局部变量，只在对应作用域起作用,可以被闭包调用
      //var声明的是一个全局变量，要么在类中，要么在整个函数中
      // currentTarget表示捕获事件的元素，target表示被点击的元素
      let like = this.properties.like
      let count = this.properties.count
      count = like ? count-1:count+1

      // this.setData可以改变data({})中的值，也能改变properties中的值
      this.setData({
        count,
        like: !like
      })
      let behavior = this.properties.like?'like':'cancel'
      //针对组件自身激活一个事件,
      this.triggerEvent('like', {behavior}, {
        bubbles: false,
        composed: false,
        capturePhase: false
      })
    }
  }
})